package myky.com.doctorapp.utils;

import android.util.Log;

import java.util.regex.Pattern;

/**
 *
 * @author 61904
 * @date 2017/6/23
 */

public class CheckTextUtils {


    /**
     * 身份证验证
     * @param cardid
     * @return
     */
    public static boolean getValidIdCard(String cardid){
        String ls_id = cardid;
        if(ls_id.length() != 18)
        {
            return false;
        }
        char[] l_id = ls_id.toCharArray();
        int l_jyw = 0;
        int[] wi = new int[]{7,9,10,5,8,4,2,1,6,3,7,9,10,5,8,4,2,1};
        char[] ai= new char[]{'1','0','X','9','8','7','6','5','4','3','2'};
        for(int i =0 ; i < 17; i++)
        {
            if(l_id[i] < '0' || l_id[i] > '9')
            {
                return false;
            }
            l_jyw += (l_id[i] -'0')*wi[i];
        }
        l_jyw = l_jyw % 11;

        if(ai[l_jyw] != l_id[17])
        {
            String c = String.valueOf(ai[l_jyw]);
            String c2=String.valueOf(l_id[17]);
            if (c.equals("X")&&c2.equals("x")){
                return true;
            }
            return false;
        }
        return true;
    }


    /**
     * 手机号码监测
     * @param mobiles
     * @return
     */
    public static boolean isMobileNumber(String mobiles) {

        return Pattern.compile("^(1)\\d{10}$")
        .matcher(mobiles).matches();
    }

    /**
     * 手机号码加密码显示
     * @param mobiles
     * @return
     */
    public static String isEncrypMobile(String mobiles) {
        return mobiles.replaceAll("(\\d{3})\\d{4}(\\d{4})","$1****$2");
    }
    /**
     * 密码长度监测
     * @param passWord
     * @return
     */
    public static boolean isPassWordNumber(String passWord){//6-16数字和字母

        boolean isPassWord=false;
                if (passWord.length()<=16&&passWord.length()>=6){
                    isPassWord=true;
                }
        return isPassWord;
    }

    /**
     * 密码内容监测
     * @param passWord
     * @return
     */
    public static boolean isLetterAndNumber(String passWord){//字母、数字和符号两种以及以上的组合

        return Pattern.compile("^(((?=.*[0-9])(?=.*[a-zA-Z])|(?=.*[0-9])(?=.*[^\\s0-9a-zA-Z])|(?=.*[a-zA-Z])(?=.*[^\\s0-9a-zA-Z]))[^\\s]+)$").matcher(passWord).matches();
    }

    /**
     * 用户名长度检测
     * @param username
     * @return
     */
    public static boolean isUserName(String username){//4-20个字符


        boolean isUserName=false;
        if (username.length()>=2&&username.length()<=20){
            isUserName=true;
        }
        return isUserName;
    }

    /**
     * 用户名类型检测
     * @param username
     * @return
     */
    public static boolean isUserNameType(String username){//字母，汉字数字

        return Pattern.compile("[\\u4e00-\\u9fa5a-zA-Z0-9\\-]{2,20}").matcher(username).matches();
    }
    /**
     * 用户名内容检测
     * @param username
     * @return
     */
    public static boolean isAllNumber(String username){//全部是数字

        return Pattern.compile("[0-9]\\d*").matcher(username).matches();
    }


    /**
     * 用户名检测
     * @param name
     * @return
     */
    public static boolean isUser_Name(String name){

        boolean isUser=false;


        if (CheckTextUtils.isUserName(name)){
            Log.i("out","name"+name.toString().getBytes().length);

            if (!isUserNameType(name)){
                ToastUtils.show("用户名只能字母，中文，数字");
                return false;
            }
            if (name.contains(" ")){
                ToastUtils.show("用户名不能有空格");
                return false;
            }
            if (CheckTextUtils.isAllNumber(name)){
                ToastUtils.show("用户名不能全是数字/符号");
                return false;
            }else {
                isUser=true;
            }

        }else {
            ToastUtils.show("用户名需4-20个字符");
            return false;
        }


        return isUser;
    }

    /**
     * 医患绑定用户名检测
     * @param name
     * @return
     */
    public static boolean isBind_User_Name(String name){

        boolean isUser=false;


        if (name.length()>0){
            Log.i("out","name"+name.toString().getBytes().length);

            if (name.contains(" ")){
                ToastUtils.show("用户名不能有空格");
                return false;
            }
            if (CheckTextUtils.isAllNumber(name)){
                ToastUtils.show("用户名不能全是数字/符号");
                return false;
            }else {
                isUser=true;
            }

        }else {
            ToastUtils.show("用户名不能为空");
            return false;
        }


        return isUser;
    }

    public static boolean isPass_Word(String password){

        boolean isPassWord=false;

        if (CheckTextUtils.isPassWordNumber(password)){


            Log.i("out","password"+CheckTextUtils.isLetterAndNumber(password));
            if (CheckTextUtils.isLetterAndNumber(password)){

               isPassWord=true;
            }else {
                ToastUtils.show("密码格式错误，字母、数字和符号两种以及以上的组合");
                isPassWord=false;
            }
        }else {
            ToastUtils.show("密码需6-16个字符");
            isPassWord=false;
        }
        return isPassWord;
    }

    public static String checkInput(String s){


        String str=null;

        String textContent = s.trim();
        while (textContent.startsWith("　")) {//这里判断是不是全角空格
            textContent = textContent.substring(1, textContent.length()).trim();
        }
        while (textContent.endsWith("　")) {
            textContent = textContent.substring(0, textContent.length() - 1).trim();
        }
        if (textContent.length() < 8) {
            str = "症状描述不得少于8个字";
        }
        if (textContent.length() > 500) {
            str = "症状描述不能大于500个字";
        }
        return str;
    }
}
